// Copyright (C) 1953-2022 NUDT
// Verilog module name - grandmaster_slave_select
// Version: V4.1.0.20221206
// Created:
//         by - fenglin
////////////////////////////////////////////////////////////////////////////
// Description:
//         
///////////////////////////////////////////////////////////////////////////

`timescale 1ns/1ps

module grandmaster_slave_select
(
    i_clk  ,
    i_rst_n,
	
	i_gm_role,
    
    iv_data_gnp  ,
	i_data_wr_gnp,
	
    iv_data_snp  ,
	i_data_wr_snp,	

	ov_data  ,
	o_data_wr
);

// I/O
// clk & rst
input                   i_clk      ;
input                   i_rst_n    ; 

input                   i_gm_role  ;
// pkt input
input	   [8:0]	    iv_data_gnp    ;
input	         	    i_data_wr_gnp  ;

input	   [8:0]	    iv_data_snp    ;
input	         	    i_data_wr_snp  ;
// pkt output to NMA
output reg [8:0]	    ov_data    ;
output reg	            o_data_wr  ;
//***************************************************
//                 packet select
//***************************************************
always @(posedge i_clk or negedge i_rst_n) begin
    if(!i_rst_n)begin
        ov_data     <= 9'b0;
        o_data_wr   <= 1'b0;       
    end
    else begin
        if(i_gm_role)begin
			ov_data     <= iv_data_gnp;
			o_data_wr   <= i_data_wr_gnp;  		
		end
		else begin
			ov_data     <= iv_data_snp;
			o_data_wr   <= i_data_wr_snp;  			
		end
    end
end
endmodule